package com.ruoyi.security.service;

import com.ruoyi.security.domain.SecurityTradingCalendar;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 证券交易日历Service接口
 * 
 * @author yeoman
 * @date 2025-01-15
 */
public interface ISecurityTradingCalendarService {
    

    /**
     * 同步交易日历数据到数据库
     * 
     * @param year 年份
     * @return 同步结果
     */
    String sync(Integer year);
    
    /**
     * 同步指定年月的交易日历数据到数据库
     * 
     * @param year 年份
     * @param month 月份（1-12）
     * @return 同步结果
     */
    String sync(Integer year, Integer month);
    
    /**
     * 查询指定年份的交易日历数据，按月份分组
     * 
     * @param year 年份
     * @return 按月份分组的交易日历数据，key为月份(1-12)，value为该月的交易日历列表
     */
    Map<Integer, List<SecurityTradingCalendar>> selectTradingCalendarByYearGroupByMonth(Integer year);
    
    /**
     * 查询日期范围内的交易日并校验完整性
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 交易日历列表
     * @throws RuntimeException 如果日期范围内缺少交易日历数据
     */
    List<SecurityTradingCalendar> selectTradingDays(Date startDate, Date endDate);
}
